<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>linux 下 deepin 和 gnome 桌面的外观设置</title>
  
    <meta name="author" content="jouyouyun">

    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
    <!--[if lt IE 9]>
      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->

    <!-- Le styles -->
    <link href="/assets/twitter/stylesheets/bootstrap.min.css" type="text/css" rel="stylesheet" media="all">
<link href="/assets/twitter/stylesheets/style.css" type="text/css" rel="stylesheet" media="all">
<link href="/assets/twitter/widgets/google_prettify/stylesheets/twitter-bootstrap.css" type="text/css" rel="stylesheet" media="all">
 

    <!-- Le fav and touch icons -->
  <!-- Update these with your own images
    <link rel="shortcut icon" href="images/favicon.ico">
    <link rel="apple-touch-icon" href="images/apple-touch-icon.png">
    <link rel="apple-touch-icon" sizes="72x72" href="images/apple-touch-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="114x114" href="images/apple-touch-icon-114x114.png">
  -->
  </head>

  <body>

    <div class="navbar">
      <div class="navbar-inner">
        <div class="container">
          <a class="brand" href="/">Jouyouyun&#39;s Blog</a>
          <ul class="nav">
            
              


  <li><a href="/archive">Archive</a></li>


            
              


  <li><a href="/tags">Tags</a></li>


            
              


  <li><a href="/categories">Categories</a></li>


            
              


  <li><a href="/about">About Me</a></li>


            
          </ul>
        </div>
      </div>
    </div>

    <div class="container">

      <div class="content">
        <div class="page-header">
  <h1>linux 下 deepin 和 gnome 桌面的外观设置 </h1>
</div>

<div class="row">
  <div class="span8">
    <p>桌面的外观设置一般包括窗口主题、图标主题、光标主题和字体设置，其中窗口主题就是常见的 <code>gtk</code> 主题，字体设置又包括标准字体、等款字体和字体大小。对于进些年的高分屏，又添加了字体缩放和窗口缩放这2个选项。</p>

<p>界面上设置方法就不介绍了，都可以在各自桌面的控制中心中找到，这里主要介绍命令行下的。</p>

<p><code>deepin</code> 和 <code>gnome</code> 桌面环境的外观配置数据是使用 <code>gsettings</code> 来存储，所以可以通过 <code>gsettings</code> 来设置和读取。<code>gsettings</code> 相比设置界面就是 可以设置到更多的选项，设置的值更加精确。</p>

<p>下面先简单介绍下 <code>gsettings</code> 的用法。</p>

<h2><code>GSettings</code></h2>

<ul>
<li><p>获取 <code>key</code></p>

<p><code>gsettings get &lt;schema_id&gt; &lt;key&gt;</code></p></li>

<li><p>设置 <code>key</code></p>

<p><code>gsettings set &lt;schema_id&gt; &lt;key&gt; &lt;value&gt;</code></p></li>
</ul>

<p>其中 <code>schema</code> 是在 <code>/usr/share/glib-2.0/schemas</code> 这个目录下，<code>schema_id</code> 是文件内容中 <code>id</code> 的值，<code>key</code> 就是文件中描述的，每个 <code>key</code> 都有一个默认值。</p>

<p>如 <code>deepin</code> 的主题配置文件是 <code>com.deepin.dde.appearance.gchema.xml</code>，通过其文件开头的内容 <code>&lt;schema path=&quot;/com/deepin/dde/appearance/&quot; id=&quot;com.deepin.dde.appearance&quot; gettext-domain=&quot;DDE&quot;&gt;
</code> 可知，其 <code>schema_id</code> 就是 <code>com.deepin.dde.appearance</code>。</p>

<h2>外观设置</h2>

<p><code>gnome</code> 的外观配置的 <code>id</code> 是 <code>org.gnome.desktop.interface</code>，<code>deepin</code> 的则是 <code>com.deepin.dde.appearance</code> 和 <code>com.deepin.xsettings</code>。</p>

<p>通过命令 <code>gsettings list-keys &lt;schema_id&gt;</code> 可以查询到所有支持的 <code>key</code>，如查询 <code>gnome</code> 支持的 <code>key</code>：</p>

<pre><code class="language-shell">$ gsettings list-keys org.gnome.desktop.interface
gtk-theme
cursor-blink-timeout
gtk-color-palette
gtk-timeout-repeat
toolkit-accessibility
cursor-theme
toolbar-style
toolbar-icons-size
text-scaling-factor
icon-theme
gtk-timeout-initial
scaling-factor
...
</code></pre>

<p>每个 <code>key</code> 的含义请阅读对应的 <code>schema</code> 文件来查询。</p>

<h3>窗口主题</h3>

<p>窗口主题对应的 <code>key</code> 是 <code>gtk-theme</code>，值是字符串类型。</p>

<p>所有系统附带的 <code>gtk</code> 主题都在 <code>/usr/share/themes</code> 目录下。</p>

<h4>读取</h4>

<ul>
<li><p><code>gnome</code></p>

<p><code>gsettings get org.gnome.desktop.interface gtk-theme</code></p></li>

<li><p><code>deepin</code></p>

<p><code>gsettings get com.deepin.dde.appearance gtk-theme</code></p></li>
</ul>

<h4>设置</h4>

<p>如设置 <code>Adapta</code> 作为窗口主题</p>

<ul>
<li><p><code>gnome</code></p>

<p><code>gsettings set org.gnome.desktop.interface gtk-theme Adapta</code></p></li>

<li><p><code>deepin</code></p>

<p><code>gsettings set com.deepin.dde.appearance gtk-them Adapta</code></p></li>
</ul>

<h4>恢复默认值</h4>

<ul>
<li><p><code>gnome</code></p>

<p><code>gsettings reset org.gnome.desktop.interface gtk-theme</code></p></li>

<li><p><code>deepin</code></p>

<p><code>gsettings reset com.deepin.dde.appearance gtk-theme</code></p></li>
</ul>

<h3>图标和光标主题</h3>

<p>图标主题的 <code>key</code> 是 <code>icon-theme</code>，光标主题的 <code>key</code> 是 <code>cursor-theme</code>，值都是字符串类型，系统附带的图标和光标主题都在 <code>/usr/share/icons/</code> 目录下。</p>

<p>主题的设置和获取方法与上面的窗口主题一样，这里就不再赘述了。</p>

<h3>字体设置</h3>

<p><code>gnome</code> 标准字体设置的 <code>key</code> 是 <code>font-name</code>，等宽字体的 <code>key</code> 是 <code>monospace-font-name</code>，值也都是字符串类型，字体的大小附加在字体名称后面一起设置，如设置标准字体：</p>

<p><code>gsettings set org.gnome.desktop.interface font-name 'Cantarell 11'</code></p>

<p><code>deepin</code> 下标准字体的 <code>key</code> 是 <code>font-standard</code>，等宽字体的是 <code>font-monospace</code>，值也是字符串类型。但它的字体大小是单独在 <code>font-size</code> 中设置的，值是浮点数类型。
使用 <code>gsettings</code> 操作的方法就不再赘述了，与窗口主题一致。</p>

<h4><code>HIDPI</code> 缩放</h4>

<p><code>gnome</code> 下字体缩放的 <code>key</code> 是 <code>text-scaling-factor</code>，它的值是浮点数类型；窗口缩放的 <code>key</code> 是 <code>scaling-factor</code>，但它的值是无符号整型，即非负的整数。</p>

<p><code>deepin</code> 下缩放的 <strong><code>schema_id</code></strong> 变为了 <strong><code>com.deepin.xsettings</code></strong>，字体缩放的 <code>key</code> 是 <code>scale-factor</code>，它的值也是浮点数类型；窗口缩放的 <code>key</code> 是 <code>window-scale</code>，它的值也是无符号整型。</p>

<p><strong>注意：</strong>只有在设置 <code>deepin</code> 缩放时 <code>schema_id</code> 才是 <code>com.deepin.xsettings</code>，其他的设置时都是 <code>com.deepin.dde.appearance</code>。</p>

<hr />

<p>以上介绍的设置方法在使用 <code>deepin</code> 或 <code>gnome</code> 作为桌面的 <code>linux</code> 发行版都可以适用，如 <code>ubuntu</code>，<code>fedora</code> 和 <code>deepin</code> 等，这些设置的改变桌面环境是会实时响应。</p>

<p>希望这些能够帮助到你，如写一个自动备份和恢复的脚本等&hellip;</p>

<p>如果你是想知道这些设置是如何生效的，请持续关注哦，本人计划在下篇文章中介绍 <code>deepin</code> 下的实现原理，谢谢支持。</p>

    <hr>
    <div class="pagination">
      <ul>
        <ul>
          
            <li class="prev"><a href="/Blog/%E6%80%8E%E4%B9%88%E5%A4%84%E7%90%86-%27Origin%27%E5%80%BC%E4%BB%8E%27Google%2C-Inc.%27%E4%BF%AE%E6%94%B9%E5%88%B0%E4%BA%86%27Google-LLC%27-%E7%9A%84-APT-%E9%94%99%E8%AF%AF/" title="怎么处理 &#39;Origin&#39;值从&#39;Google, Inc.&#39;修改到了&#39;Google LLC&#39; 的 APT 错误">&larr; Previous</a></li>
          
          

            <li><a href="/archive">Archive</a></li>

          
            <li class="next"><a href="/Blog/Linux-%E4%BC%91%E7%9C%A0%E8%87%AA%E5%8A%A8%E5%94%A4%E9%86%92/" title="Linux 休眠自动唤醒">Next &rarr;</a></li>
          
          
        </ul>
      </ul>
    </div>
    <hr>
    
<div id="disqus_thread"></div>
<script>
    var disqus_developer = 1;
    var disqus_shortname = 'jekyllbootstrap'; // required: replace example with your forum shortname
    /* * * DON'T EDIT BELOW THIS LINE * * */
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a>

  </div>
  
  <div class="span4">
    <h4>Published</h4>
    <div class="date"><span>2018-10-23</span></div>
    <br>
    <h4>Categories</h4>
    <ul class="tag_box">
    
      <li>
  <a href="/categories/#Blog-ref">Blog <span>23</span></a>
</li>
    
    </ul>
    <br>
    <h4>Tags</h4>
    <ul class="tag_box">
    
      <li>
  <a href="/tags/#deepin-ref">deepin <span>1</span></a>
</li>
    
      <li>
  <a href="/tags/#gnome-ref">gnome <span>1</span></a>
</li>
    
      <li>
  <a href="/tags/#theme-ref">theme <span>1</span></a>
</li>
    
      <li>
  <a href="/tags/#font-ref">font <span>1</span></a>
</li>
    
      <li>
  <a href="/tags/#gtk-ref">gtk <span>1</span></a>
</li>
    
      <li>
  <a href="/tags/#icon-ref">icon <span>1</span></a>
</li>
    
      <li>
  <a href="/tags/#cursor-ref">cursor <span>2</span></a>
</li>
    
    </ul>
  </div>
</div>

      </div>

      <footer>
        <p>&copy; jouyouyun 2013 
          with help from <a href="http://github.com/wendal/gor" target="_blank" title="Gor -- Fast Blog">Gor</a>
          and <a href="http://twitter.github.com/bootstrap/" target="_blank">Twitter Bootstrap</a>
		  and Idea from <a href="http://ruhoh.com" target="_blank" title="The Definitive Technical Blogging Framework">ruhoh</a>
        </p>
      </footer>

    </div> <!-- /container -->

    
<script src="//cdnjscn.b0.upaiyun.com/libs/prettify/r298/prettify.min.js"></script>
<script>
  var pres = document.getElementsByTagName("pre");
  for (var i=0; i < pres.length; ++i) {
    pres[i].className = "prettyprint linenums";
  }
  prettyPrint();
</script>

    
<script type="text/javascript">

  var _gaq = _gaq || [];
  var pluginUrl = '//www.google-analytics.com/plugins/ga/inpage_linkid.js';
  _gaq.push(['_require', 'inpage_linkid', pluginUrl]);
  _gaq.push(['_setAccount', 'UA-123-12']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>
  </body>
</html>
